/**
 * Created by kule on 2015/8/18.
 */
/*
 /javascript:eval("var js=document.createElement('script');js.src='http://tbao.tv:8090/cnki.js';document.body.appendChild(js);");void(0);
* */
(function(){
    var js=document.createElement('script');
    js.src='http://libs.useso.com/js/jquery/1.11.1/jquery.js';
    document.body.appendChild(js);
    js.onload=function(){
        init();
    };

    function init(){
        var iframeSrc=$('#iframeResult')[0].src;

        var jqRstP=$('' +
            '<div style="border:1px solid #3892ee;box-shadow:0 0 16px 3px #3892ee;position: absolute;top:20px;;left:10%;width:80%;height:50%;background:#fff;padding:20px;z-index:99999;">' +
            '<div style="padding-right:40px;line-height: 30px;">' +
            '<div style="float:right;font-size:14px;">' +
                '从第<input class="pageInput" type="number" style="width:40px;margin:0 5px;font-size:14px;" name="page" value="1" />页开始采集'+
                '<button style="font-size:14px;margin:0 5px;padding:5px;" class="startBtn">开始</button>' +
                '<button style="font-size:14px;margin:0 5px;padding:5px;" class="stopBtn">停止</button>' +
            '</div>' +
            '<div style="color:#3fb329;font-size:14px;">祝脑残妹工作愉快..</div>' +
            '<div class="tipLq" style="color:#3fb329;font-size:14px;">&nbsp;</div>' +
            '<div class="errTipLq" style="color:#f3771c;font-size:14px;"></div>' +
            '</div>' +
            '<textarea class="resultLq" style="width: 100%;height:80%;"></textarea>' +
            '</div>');
        var jqRst=$('.resultLq',jqRstP);
        var jqTip=$('.tipLq',jqRstP);
        var jqErrTip=$('.errTipLq',jqRstP);
        var jqPageInput=$('.pageInput',jqRstP);
        var jqStartBtn=$('.startBtn',jqRstP);
        var jqStopBtn=$('.stopBtn',jqRstP);

        var i=0;
        var curPage=1;//默认第1页开始采集
        var isStop=false;
        $('body').append(jqRstP);
        jqStopBtn.on('click',stop);
        jqStartBtn.on('click',function(){
            isStop=false;
            curPage=jqPageInput.val()-0;
            if(curPage<1)curPage=1;
            i=0;
            jqStartBtn.attr('disabled',true);
            jqPageInput.attr('disabled',true);
            jqRst.text('');
            //首次加载
            getResult(iframeSrc);
        });
        function stop(){
            isStop=true;
            jqStartBtn.removeAttr('disabled',true);
            jqPageInput.removeAttr('disabled',true);
        }


        var reg=/ReplaceJiankuohao\('([^']+)'\)/i;
        function getTitle(text){
            var title=text.match(reg);
            if(!title)return '';
            title=$('<div>'+title[1]+'</div>').text();
            return title;
        }

        var baseUrlReg=/^(http:[^?]+)\?/i;
        var baseUrl=iframeSrc.match(baseUrlReg);
        baseUrl&&(baseUrl=baseUrl[1]);

        var makePageUrlReg=/curpage=\d+&/i;
        function makePageUrl(url,page){
            url=url.replace(makePageUrlReg,'curpage='+page+'&');
            return baseUrl+url;
        }
        function getUrl(jqP){
            var jqA=$('.pageBar_bottom',jqP).find('a:last');
            if(jqA.text()=='下一页'){
                return makePageUrl(jqA.attr('href'),curPage);
            }
            log('未找到下一页',$('.pageBar_bottom',jqP));
            return '';
        }

        var urlMap={};
        var hrefMap={};
        function getResult(url){
            var tip='从第'+(curPage-i)+'开始采集，';
            if(isStop){
                tip+='用户停止抓取，共抓取 '+i+' 页数据';
                log(tip);
                jqTip.text(tip);
                return;
            }
            if(!url){
                tip+='抓取到最后一页，共抓取 '+i+' 页数据';
                log(tip);
                jqTip.text(tip);
                stop();
                return;
            }

            tip+='正在抓取第 '+curPage+' 页数据，请稍后..';
            jqTip.text(tip);
            log('正在抓取第'+curPage+'页，url='+url);
            $.get(url,function(res){
                window.TOOLS_DEBUG&&log('返回数据',res);
                var jqRes=$(res);
                if(checkResult(jqRes)){
                    i++;
                    curPage++;
                    parseResult(jqRes);
                }
                setTimeout(function(){
                    getResult(getUrl(jqRes));
                },1000);
            })
        }

        //cnki对于每次查询，分配查询id，失效后自动跳到第1页，
        // 所以需要检查结果，确保结果是当前页
        function checkResult(jqRes){
            var page=$('.pageBar_bottom',jqRes).find('.Mark').html()-0;
            return page==curPage;
        }

        function parseResult(jqRes){
            var jqA=$('a.fz14',jqRes);
            var rst=[];
            jqA.each(function(){
                var title=getTitle($(this).text());
                var href=getHref(this.href);
                rst.push(title,href);
            });
            jqRst.text(jqRst.text()+rst.join('\r\n'));
            jqRst.scrollTop(9999999);
        }

        var getHref=(function(){
            var detailRoot='http://www.cnki.net/KCMS/detail/detail.aspx?';
            var reg=/^http:[^?]+\?/i;
            return function(href){
                return href.replace(reg,detailRoot);
            }
        })();
        function log(){
            /*if(console&&console.log){
                console.log.apply(console,arguments);
            }*/
        }
    }
})();